package filecenter

import (
	"goadmin/models"
	"net/http"
	"os"
	"path/filepath"
	"time"

	"github.com/gin-gonic/gin"
)

const uploadDir = "./uploads"

// 上传文件
func UploadFile(c *gin.Context) {
	// 获取上传的文件
	file, err := c.FormFile("file")
	if err != nil {
		c.JSON(500, gin.H{"message": "Error while getting file"})
		return
	}

	// 保存文件到上传目录
	dst := filepath.Join(uploadDir, file.Filename)
	err = c.SaveUploadedFile(file, dst)
	if err != nil {
		c.JSON(500, gin.H{"message": "Error while saving file"})
		return
	}

	result := models.Gorm.Create(&models.File{
		Name:      file.Filename,
		Path:      dst,
		Size:      file.Size,
		CreatedAt: time.Now().Unix(),
	})
	if result.Error != nil {
		c.JSON(500, gin.H{"message": "Error while saving file info to DB"})
		return
	}
	// // 重定向到上传页面
	// c.Redirect(http.StatusFound, "/admin/info/file")

	c.JSON(http.StatusOK, gin.H{
        "success": true,
    })
}

// 文件下载接口
func DownloadFile(c *gin.Context) {
	// 获取文件名
	filename := c.Param("filename")
	filePath := filepath.Join(uploadDir, filename)
	// 检查文件是否存在
	if _, err := os.Stat(filePath); os.IsNotExist(err) {
		c.JSON(404, gin.H{"message": "File not found"})
		return
	}
	// 下载文件
	c.File(filePath)
}
